// 生成截图功能
function captureScreenshot() {
    const codeWindow = document.querySelector('.code-window');
    const padding = 50; // 外边框 50px

    // 获取代码窗口的实际内容尺寸
    const rect = codeWindow.getBoundingClientRect();
    const width = rect.width;
    const height = rect.height;

    // 创建临时容器
    const tempContainer = document.createElement('div');
    tempContainer.style.position = 'absolute';
    tempContainer.style.left = '0';
    tempContainer.style.top = '0';
    tempContainer.style.width = `${width}px`;
    tempContainer.style.height = `${height}px`;
    tempContainer.style.padding = '0';
    tempContainer.style.margin = '0';
    tempContainer.style.overflow = 'hidden'; // 防止内容溢出

    // 克隆代码窗口并设置固定宽度
    const clonedWindow = codeWindow.cloneNode(true);
    clonedWindow.style.width = `${width}px`;
    clonedWindow.style.margin = '0';
    tempContainer.appendChild(clonedWindow);
    document.body.appendChild(tempContainer);

    // 创建画布
    const canvas = document.createElement('canvas');
    canvas.width = width + padding * 2;
    canvas.height = height + padding * 2;
    const ctx = canvas.getContext('2d');

    // 绘制背景渐变
    const gradient = ctx.createLinearGradient(0, 0, 0, canvas.height);
    gradient.addColorStop(0, '#2979AC');
    gradient.addColorStop(1, '#BECBD4');
    ctx.fillStyle = gradient;
    ctx.fillRect(0, 0, canvas.width, canvas.height);

    html2canvas(tempContainer, {
        scale: 2,
        useCORS: true,
        logging: false,
        backgroundColor: null,
        width: width,  // 指定精确的宽度
        height: height // 指定精确的高度
    }).then(codeCanvas => {

        // 在绘制代码窗口之前调整画布的全局属性
        ctx.shadowColor = 'rgba(0, 0, 0, 0.3)';
        ctx.shadowBlur = 15;
        ctx.shadowOffsetX = 0;
        ctx.shadowOffsetY = 4;

        // 在背景中央绘制代码窗口
        ctx.drawImage(
            codeCanvas,
            padding,
            padding,
            width,
            height
        );

        // 调整亮度和对比度
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        
        // 亮度和对比度参数
        const brightness = 5; // 增加亮度，可以调整这个值（-100 到 100）
        const contrast = 10;  // 增加对比度，可以调整这个值（-100 到 100）
        
        const factor = (259 * (contrast + 255)) / (255 * (259 - contrast));

        for (let i = 0; i < data.length; i += 4) {

            // 应用亮度
            data[i] += brightness;     // 红色
            data[i + 1] += brightness; // 绿色
            data[i + 2] += brightness; // 蓝色

            // 应用对比度
            data[i] = factor * (data[i] - 128) + 128;
            data[i + 1] = factor * (data[i + 1] - 128) + 128;
            data[i + 2] = factor * (data[i + 2] - 128) + 128;
        }

        ctx.putImageData(imageData, 0, 0);

        // 转换为图片并下载
        const image = canvas.toDataURL('image/png');
        const a = document.createElement('a');
        a.href = image;
        a.download = 'code-screenshot.png';
        a.click();

        // 清理临时元素
        document.body.removeChild(tempContainer);
    });
}